﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using MakeIT.MiraPark.Negocios;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace MiraPark
{
    public static class Ticket
    {
        public static string getHeader()
        {
            EmpresaVO empresaVO = ModelBO.getEmpresa(int.Parse(ModelBO.getParametro("Empresa Ativa")));

            StringBuilder mensagem = new StringBuilder();
            mensagem.AppendLine("================================================");
            mensagem.AppendLine("<b><ce>"+empresaVO.nomeTicket.Trim()+"</ce></b>");
            mensagem.AppendLine("<ce>"+empresaVO.endereco.Trim()+
                                      (empresaVO.enderecoNumero.Trim().Length>0?", "+empresaVO.enderecoNumero.Trim():"")+
                                      (empresaVO.complemento.Trim().Length>0?" "+empresaVO.complemento.Trim():"")+
                                "</ce>");
            mensagem.AppendLine("<ce>"+
                                      (empresaVO.bairro.Trim().Length > 0 ? " " + empresaVO.bairro.Trim() : "") +
                                      (empresaVO.cidade.Trim().Length > 0 ? " " + empresaVO.cidade.Trim() : "") +
                                      (empresaVO.UF.Trim().Length > 0 ? " " + empresaVO.UF.Trim() : "") +
                                "</ce>");
            mensagem.AppendLine("<ce>CNPJ "+empresaVO.CNPJ+"</ce>");
            mensagem.AppendLine("================================================");
            return mensagem.ToString();
        }

        public static string getFooter(bool comDeclaracao, CabineVO cabineVO, UsuarioVO usuarioVO)
        {
            StringBuilder mensagem = new StringBuilder();

            if (comDeclaracao)
            {
                mensagem.AppendLine("------------------------------------------------");
                mensagem.AppendLine("<ce>PERDA DO COMPROVANTE DE ENTRADA</ce>");
                mensagem.AppendLine("");
                mensagem.AppendLine("\tDeclaro para os devidos fins, que retirei ");
                mensagem.AppendLine("o veículo abaixo descrito sem o ticket de ");
                mensagem.AppendLine("entrada, porque o mesmo foi extraviado.");
                mensagem.AppendLine("");
                mensagem.AppendLine("RENAVAN :");
                mensagem.AppendLine("Nome :");
                mensagem.AppendLine("");
                mensagem.AppendLine("C.P.F. :");
                mensagem.AppendLine("");
                mensagem.AppendLine("RG :                   Orgão Emissor :");
                mensagem.AppendLine("");
                mensagem.AppendLine("End. :");
                mensagem.AppendLine("");
                mensagem.AppendLine("");
                mensagem.AppendLine("Telefone :");
                mensagem.AppendLine("");
                mensagem.AppendLine("Assinatura :");
            }
            
            mensagem.AppendLine("------------------------------------------------");
            mensagem.AppendLine("Patio:" + cabineVO.patioVO.patio + " Cab.:" + cabineVO.cabine + " Op.: "+usuarioVO.usuario);
            mensagem.AppendLine("------------------------------------------------");
            mensagem.AppendLine("");
            mensagem.AppendLine("");
            mensagem.AppendLine("");
            mensagem.AppendLine("");
            mensagem.AppendLine("<gui></gui>");
            return mensagem.ToString();
        }

        public static bool checkPrint()
        {
            //DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iEnviarBMP_DUAL_DarumaFramework("c:\\temp\\Logo.bmp");
            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.rStatusImpressora_DUAL_DarumaFramework();

            if (DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno == 0 | DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno == -27 | DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno == -50 | DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno == 51 | DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno == 52)
            {
                switch (DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno)
                {
                    case 0: MessageBox.Show("0(zero) - Impressora Desligada!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        break;
                    //case 1: MessageBox.Show("1(um) - Impressora OK!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    //    break;
                    case -50: MessageBox.Show("-50 - Impressora OFF-LINE!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        break;
                    case -51: MessageBox.Show("-51 - Impressora Sem Papel!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        break;
                    case -27: MessageBox.Show("-27 - Erro Generico!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        break;
                    case -52: MessageBox.Show("-52 - Impressora inicializando!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        break;
                }
                return false;
            }
            else if (DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno != 1)
            {
                MessageBox.Show("Retorno não esperado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            return true;
        }

        public static bool printTicket(string ticket)
        {
            string iTextoVazio = ticket;
            DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iImprimirTexto_DUAL_DarumaFramework(iTextoVazio, 0);
            if (DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno == 1)
            {
                //MessageBox.Show("Impressão realizada com sucesso.", "Daruma DLL Framework", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return true;
            }
            else
            {
                MessageBox.Show("Erro ao Imprimir o texto, verifique a impressora!", "Daruma DLL Framework", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
        }

        public static string cutText(string texto)
        {
            string textoTemp = "";

            // tirar o html
            textoTemp = Regex.Replace(texto, "<[\\d\\w\\s/\\\\\\-_\\+=:;,\\.\\*\\$\\#\\[\\]~\\{\\}\\\"\\\'\\^~\\(\\)@!\\?%&]*>", "");

            return textoTemp;
        }

    }
}
